import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import java.io.StringReader;
import java.util.*;
import java.lang.Boolean;

enum comandosEnum {DESCONOCIDO, NOMBRE_JUGADOR, LISTA_DE_PARTIDAS, CREAR_PARTIDA, CONECTAR_PARTIDA, MENSAJE, ESTADO_DE_PARTIDA, TECLAS, SALIR, RESULTADO}

public class Xml
{
	Document document;
	HashMap<String, comandosEnum> comandos;
	static final String verdadero = "<resultado>true</resultado>";
	static final String falso = "<resultado>false</resultado>";

	public Xml(String xml_text)
	{
		comandos = new HashMap<String, comandosEnum>();

		comandos.put("nombre_jugador", comandosEnum.NOMBRE_JUGADOR);
		comandos.put("lista_de_partidas", comandosEnum.LISTA_DE_PARTIDAS);
		comandos.put("crear_partida", comandosEnum.CREAR_PARTIDA);
		comandos.put("conectar_partida", comandosEnum.CONECTAR_PARTIDA);
		comandos.put("mensaje", comandosEnum.MENSAJE);
		comandos.put("estado_de_partida", comandosEnum.ESTADO_DE_PARTIDA);
		comandos.put("teclas", comandosEnum.TECLAS);
		comandos.put("salir", comandosEnum.SALIR);
		comandos.put("resultado", comandosEnum.RESULTADO);

		document = null;
		try
		{
			DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
			InputSource inputSource = new InputSource(new StringReader(xml_text));
			document = documentBuilder.parse(inputSource);
		}
		catch(Exception e)
		{
			//e.printStackTrace();
		}
	}

	comandosEnum identificarXml()
	{
		comandosEnum cE;
		if (document != null)
		{
			Node nodo = (Node)document.getDocumentElement();
			cE = comandos.get(nodo.getNodeName());

			return cE == null ? comandosEnum.DESCONOCIDO : cE;
		}
		return comandosEnum.DESCONOCIDO;
	}

	String mensajeChat()
	{
		try
		{
			Node nodo = (Node)document.getDocumentElement();
			if (nodo.getNodeName().equals("mensaje"))
			{
				NodeList nodeList = nodo.getChildNodes();
				Node nodo2 = nodeList.item(0);

				return nodo2.getNodeValue();
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}

		return null;
	}
}